﻿Imports StandAuto.DesktopApi
Imports StandAuto.Models

Public Class FormFornecedores

    Private Sub DataGridView1_Click(sender As Object, e As EventArgs) Handles DataGridView1.Click

        Dim fornecedor As Fornecedor
        Dim dtGridView As DataGridView = CType(sender, DataGridView)
        Try
            Dim rowindex = dtGridView.CurrentCell.RowIndex
            fornecedor = CType(dtGridView.DataSource()(rowindex), Fornecedor)
            MapFornecedor(fornecedor)
        Catch ex As Exception
            Dim result As DialogResult = MessageBox.Show("Nao conseguimos mapear totalmente os dados do fornecedor devido a:" + vbCrLf + ex.Message, "Ocurreu um erro:", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Exclamation)
            Select Case result
                Case DialogResult.Abort
                    Me.Close()
                Case DialogResult.Retry
                    DataGridView1_Click(sender, e)
            End Select
        End Try

    End Sub

    Private Sub MapFornecedor(fornecedor As Fornecedor)
        TxtId.Text = fornecedor.id
        TxtContribuinte.Text = fornecedor.contribuinte
        TxtLocalidade.Text = fornecedor.localidade
        TxtMorada.Text = fornecedor.morada
        TxtNome.Text = fornecedor.nome
        TxtTelefone.Text = fornecedor.telefone
        TxtPostal.Text = fornecedor.codigoPostal
        DataGridView2.DataSource = AcessoCamadaDeDados.GetAllComprasByFornecedor(fornecedor.id)
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.DataSource = Utilitarios.BuscarListaPesquisada(Of Fornecedor)(AcessoCamadaDeDados.GetAllFornecedores(), TextBoxPesquisaFornecedores.Text)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        TxtId.Text = "(novo)"
        TxtContribuinte.Text = ""
        TxtLocalidade.Text = ""
        TxtMorada.Text = ""
        TxtNome.Text = ""
        TxtTelefone.Text = ""
        TxtPostal.Text = ""
        DataGridView2.DataSource = Nothing
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim ForntoSave As Fornecedor = New Fornecedor() With {
       .codigoPostal = TxtPostal.Text,
       .contribuinte = TxtContribuinte.Text,
        .localidade = TxtLocalidade.Text,
        .morada = TxtMorada.Text,
        .nome = TxtNome.Text,
        .telefone = TxtTelefone.Text,
        .id = -1
       }
        If IsNumeric(TxtId.Text) Then
            ForntoSave.id = TxtId.Text
        End If
        Dim ValidaClt As String = validaFornecedor(ForntoSave)
        If (String.IsNullOrEmpty(ValidaClt)) Then
            Try
                AcessoCamadaDeDados.SaveFornecedor(ForntoSave)
                DataGridView1.DataSource = AcessoCamadaDeDados.GetAllFornecedores()
                If Not IsNumeric(TxtId.Text) Then
                    MapFornecedor(AcessoCamadaDeDados.GetAllFornecedores().OrderBy(Function(z) z.id).Last())
                End If
            Catch ex As Exception
                MessageBox.Show("Erro a guardar o fornecedor:" & ex.Message, "Erro ao guardar o cliente", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        Else
            MessageBox.Show("Erro a validar o fornecedor antes de guardar:" & vbCrLf & ValidaClt, "Validação de cliente", MessageBoxButtons.OK)
        End If
    End Sub

    Private Function validaFornecedor(fornecedor As Fornecedor) As String
        Dim retVal As String = String.Empty
        If String.IsNullOrWhiteSpace(fornecedor.nome) Then
            retVal = "O nome do fornecedor tem que estar preenchido."
        End If
        If String.IsNullOrWhiteSpace(fornecedor.contribuinte) Then
            retVal = retVal & IIf(String.IsNullOrEmpty(retVal), "", vbCrLf) & "O contribuinte do fornecedor tem que estar preenchido."
        End If
        Return retVal
    End Function

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim frm As FormTransacao = New FormTransacao()
        If Not ((TxtId.Text = "(novo)" Or String.IsNullOrWhiteSpace(TxtId.Text))) Then
            frm.fornecedor = AcessoCamadaDeDados.getFornecedor(TxtId.Text)
        End If
        frm.ShowDialog()
        If Not ((TxtId.Text = "(novo)" Or String.IsNullOrWhiteSpace(TxtId.Text))) Then
            DataGridView2.DataSource = AcessoCamadaDeDados.GetAllComprasByFornecedor(TxtId.Text)
        End If
    End Sub

    Private Sub TextBoxPesquisaFornecedores_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxPesquisaFornecedores.KeyPress
        If e.KeyChar = vbCr Then
            Button1.PerformClick()
        End If
    End Sub

    Private Sub TextBoxPesquisaVenda_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxPesquisaVenda.KeyPress
        If e.KeyChar = vbCr Then
            Button5.PerformClick()
        End If
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        If IsNumeric(TxtId.Text) Then
            DataGridView2.DataSource = Utilitarios.BuscarListaPesquisada(Of Compra)(AcessoCamadaDeDados.GetAllComprasByFornecedor(TxtId.Text), TextBoxPesquisaVenda.Text)
        End If

    End Sub

    Private Sub FormFornecedores_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = AcessoCamadaDeDados.GetAllFornecedores
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        Dim url As String = AcessoCamadaDeDados.getSetting("URLREPORT")
        If Not String.IsNullOrWhiteSpace(TxtId.Text) Or TxtId.Text = "(novo)" Then
            System.Diagnostics.Process.Start(url & "/Transacao/ComprasByFornecedor/" + TxtId.Text)
        End If
    End Sub
End Class